const mongoose = require('mongoose');

const passportLocalMongoose = require('passport-local-mongoose');

const UserSchema = new mongoose.Schema({
  email: {
    type: String,
    maxlength: 256,
    unique: true,
    match: /^[\w-\.]+@([\w-]+\.)+[\w-]{2,4}$/,
    required: [true, 'Email is required']
  },
  password: {
    type: String,
    maxlength: 1024
  },

  // 注意：在 Mongoose 中，使用 enum 属性限制字段值的取值范围，
  // 需要注意的是，如果字段的值不在 enum 指定的取值范围内，
  // Mongoose 并不会抛出错误，而是会将该字段的值设为 undefined。
  role: {
    type: String,
    validate: (value) => {
      console.log('value', value);
      return ['member', 'admin'].includes(value);
    },
    default: 'member'
  }
});

UserSchema.plugin(passportLocalMongoose);

const User = mongoose.model('User', UserSchema);

module.exports = User;
